/************************************************************
 * Project Name         [Thinking_In_Java]
 * File Name            [InstallationWizard.java]
 * Creation Date        [24-Jul-2014]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ************************************************************/
package pkg_principles.lod.example02;

import java.util.Random;

/**
 * 软件安装向导类
 * 
 * @author 不落的太阳(Sean Yang)
 * @version 1.0
 * @since JDK 6
 * 
 */
public class InstallationWizard {

	private final Random random = new Random(System.currentTimeMillis());

	/**
	 * 第一步
	 * 
	 * @return
	 */
	private int firstStep() {
		System.out.println("执行第一个方法...");
		return random.nextInt(100);
	}

	/**
	 * 第二步
	 * 
	 * @return
	 */
	private int secondStep() {
		System.out.println("执行第二个方法...");
		return random.nextInt(100);
	}

	/**
	 * 第三个方法
	 * 
	 * @return
	 */
	private int thirdStep() {
		System.out.println("执行第三个方法...");
		return random.nextInt(100);
	}

	/**
	 * 安装向导
	 * 
	 * Wizard暴露了太多的方法给SoftwareInstallation, 耦合度太紧密了, 因此我们定义了一个方法来解耦
	 */
	public void installWizard() {
		int first = firstStep();
		// 根据firstStep返回的结果, 看是否需要执行secondStep
		if (first > 50) {
			int second = secondStep();
			if (second > 50) {
				int third = thirdStep();
				if (third > 50) {
					firstStep();
				}
			}
		}
	}

}
